恺撒密码 您所在的位置:网站首页 c语言 凯撒密码 恺撒密码

恺撒密码

2023-05-23 02:35| 来源: 网络整理| 查看: 265

点击文章标题进入阅读模式!

尊重知识产权,引用注明出处!谢谢合作!有问题请在B站私信!链接欢迎大家关注我的Bilibli感谢一键三连哦~

在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

这里我们主要讨论的还是如何使用C语言,和Python语言实现恺撒密码的算法!关于密码,具体还请看到百度百科解释恺撒密码

(1). 如何确定哪些字符不需要改变?哪些字符需要改变?如果需要改变?应该改为哪个对应的字符?

算法的处理方法是:输入一个字符串,给字符变量char c,先判定它是否为字母(包括大小写)。若不是字母,则不改变c的值;若是字母则还要继续检查它是否在(‘Z’-密钥数字+1~’Z’)内(包括大小写字母也是对应转化)。如果不在这个范围,那么就可以正常偏移,即使该字母的ASCII值+密钥,这就等于字母往后移动了密钥的位数;如果在这个范围内,那么偏移是就该使该字母的ASCII值+密钥-26,因为有26个英文字母,所以减26就是回到A开始继续往后移动

(2). 如何使字符变量c改变为所指定的字母?

办法是改变它的ASCII值,例如字符变量的原值使大写字母’A’,想使c的值改变为’E’,只需执行’c = c + 4’即可,因为’A’的ASCII值是65,而’E’的ASCII值是69,二者相差4。

对照ASCII表

C语言源程序代码:

1234567891011121314151617181920212223242526272829303132333435//凯撒密码int add(){ char a[20] = { 0 }; int b = 0; int c = 0; printf("输入密文:\n"); scanf("%s", a); c = strlen(a); printf("输入密钥:\n"); scanf("%d", &b); for (int i = 0; i < c; i++) { if ((a[i] >= 'a' && a[i] = 'A' && a[1] = ('Z' - b + 1) && a[i] = ('z' - b + 1) && a[i] = ord('a') and ord(str[i]) = ord('A') and ord(str[1]) = (ord('Z') - b + 1) and ord(str[i]) = (ord('z') - b + 1) and ord(str[i])


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有